# Copyright (c) 2010 Code Owls LLC
# 
# Permission is hereby granted, free of charge, to any person obtaining a copy 
#	of this software and associated documentation files (the "Software"), 
#	to deal in the Software without restriction, including without limitation 
#	the rights to use, copy, modify, merge, publish, distribute, sublicense, 
#	and/or sell copies of the Software, and to permit persons to whom the 
# 	Software is furnished to do so, subject to the following conditions:
# 
# The above copyright notice and this permission notice shall be included in 
#	all copies or substantial portions of the Software.
# 
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
#	IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
#	FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 
#	THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
#	LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
#	FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
#	DEALINGS IN THE SOFTWARE. 
#
#
# for information regarding this project, to request features or 
#	report issues, please see: http://poshrabbit.codeplex.com
#
# start-chat.ps1
#

param( $chatname = $env:username )

Import-Module poshrabbit;

. ./config.ps1 $chatname;

function send-chat
{
	[CmdletBinding()]
	param(
		[parameter( mandatory=$true, valuefrompipeline=$true )]
		[string]
		$message,
		
		[parameter(mandatory=$false)]
		[string]
		$recipient
	);
	
	$key = $pschat.broadcastRoutingKey;
	if( $recipient )
	{
		$key = ($pschat.interpersonalRoutingKeyBase + $recipient );
	}
	Write-Debug "routingkey $key";
	( $pschat.chatname + " says: " + $message ) | `
		publish-string -host $pschat.hostname -exchange $pschat.exchangeName `
		-routingKey $key -encoding 'utf8';
}

function stop-chat
{
	$script:consumer | stop-consumer;
	$script:personalconsumer | stop-consumer;
}

function start-chat
{
	$script:consumer = start-consumer -host $pschat.hostname -exchange $pschat.exchangeName `
		-routingKey $pschat.broadcastRoutingKey -encoding 'utf8' `
		-action { 
			Write-Host;
			$_.Message | Write-Host -background blue -foreground Yellow;	
			Write-Host;
			prompt | Write-Host;
		};

	$script:personalConsumer = start-consumer -host $pschat.hostname -exchange $pschat.exchangeName `
		-routingKey $pschat.interpersonalRoutingKey -encoding 'utf8' `
		-action { 
			Write-Host;
			$_.Message | Write-Host -Background DarkRed -Foreground White; 			 
			Write-Host;
			prompt | Write-Host;
		};
}	

$script:consumer = $null;
$script:personalConsumer = $null;

start-chat;